#pragma once

#include <vector>
#include "Enum.h"
#include <fstream>

class Level;
class Player;
class Portal;

class Dungeon {
	int m_numLevels;
	int m_dLevel;
	DungeonType m_dungeonType;
	std::vector<Level*> m_levels;
public:
	Dungeon(DungeonType dungeonType, int numLevels, int dLevel);
	Dungeon(std::ifstream& file);
	~Dungeon();
	void enterDungeon(Player* player);
	int getNumLevels() const;
	Level* getLevel(int levelNum);
	DungeonType getDungeonType() const;
	void takePortal(Player* player, Portal* portal);
	void save(std::ofstream& file) const;
};

inline int Dungeon::getNumLevels() const {return m_numLevels;}
inline DungeonType Dungeon::getDungeonType() const {return m_dungeonType;}
